/**
 * 定时任务调度脚本
 * 用于定期执行系统中的各种自动化任务
 */
const schedule = require('node-schedule');
const { autoCompleteOrders } = require('../utils/orderScheduler');

/**
 * 启动所有定时任务
 */
function startScheduledTasks() {
    // 立即执行一次检查，处理系统启动前已经超时的订单
    console.log('系统启动，立即执行订单状态检查...');
    setTimeout(async () => {
        try {
            await autoCompleteOrders();
            console.log('系统启动时的订单状态检查完成');
        } catch (error) {
            console.error('系统启动时的订单状态检查失败:', error);
        }
    }, 3000); // 等待3秒，确保数据库连接已经建立

    // 每小时执行一次订单自动完成任务 (每小时的第0分钟执行)
    schedule.scheduleJob('0 * * * *', async function () {
        console.log('执行订单自动完成定时任务...');
        await autoCompleteOrders();
    });

    // 也可以每天凌晨执行一次大型检查
    schedule.scheduleJob('0 0 * * *', async function () {
        console.log('执行每日订单检查定时任务...');
        await autoCompleteOrders();
    });

    console.log('所有定时任务已启动');
}

module.exports = {
    startScheduledTasks,
    // 导出函数，允许手动触发检查
    manualCheckOrders: autoCompleteOrders
}; 